; %macro Descriptor 3 表示要初始化这个数据结构需要传入3个参数
; %1 表示引用第一个参数，%2 第二个， %3 第三个
; dw 表示两个字节，db 表示一个字节，一共8个字节
; 第一个参数是32位有效，第二个参数是低20位有效

%macro Descriptor 3
    dw  %2 & 0FFFFh                         ; 将第二个参数的低16位放入byte0,byte1
    dw  %1 & 0FFFFh                         ; 将第一个参数的低16位放入byte2,byte3
    db  (%1 >> 16) & 0FFh                   ; 将第一个参数的17-24位放入byte4
    dw  ((%2 >> 8) & 0F00h) | (%3 & 0F0FFh) ; 将第二个参数的17-20位和第三个参数的相应位放入byte5,byte6
                                            ; 参数2的4位值是放在byte6中的
    db  (%1 >> 24) & 0FFh                   ; 将第一个参数的25-32位放入byte7
%endmacro

DA_32       EQU     4000h       ; 32位段
DA_C        EQU     98h         ; 存在的只执行代码段属性值
DA_DRW      EQU     92h         ; 存在的可读写数据段属性值

